/*
 * Copyright (c) 2023 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**---
 description: >
     enums are "open-ended" and enum declarations with the same qualified name relative to a common root define a single enum type and contribute to a single enum object.
     it isn't possible for one enum declaration to continue the automatic numbering sequence of another, and when an enum type has multiple declarations, only one declaration is permitted to omit a value for the first member.
 module: ESNext
 isCurrent: true
 ---*/


import { Assert } from '../../../../suite/assert.js'

enum A {
  A1,
  A2,
}
enum A {
  A3 = 3,
  A4,
}
Assert.equal(A.A1, 0);
Assert.equal(A.A2, 1);
Assert.equal(A.A3, 3);
Assert.equal(A.A4, 4);
namespace NSP {
  export enum A {
    A1,
    A2,
  }
  export enum A {
    A3 = 2,
    A4,
  }
}
Assert.equal(NSP.A.A1, 0);
Assert.equal(NSP.A.A2, 1);
Assert.equal(NSP.A.A3, 2);
Assert.equal(NSP.A.A4, 3);